
/**
 * @file gtkInfo.c
 * @brief Fichier source du module gtkInfo.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de gtkInfo                         

********************************************************************* */

#include "gtkInfo.h"

/* *********************************************************************

                        Fonctions                                      

********************************************************************* */

void setInfoCss_Ginf(GtkInfo *info)
{
  gchar *tmp = NULL, *css = NULL;
  guchar *cssFile = NULL;
  
  int c;
  FILE *f = fopen ("data/info.css", "r");
  
  if (f == NULL)
    perror("data/info.css");
  else
    {
      int taille = 0 ;
      char tmp[1024];
      while ( (c = fgetc(f)) != EOF)
	taille++;
      cssFile = (guchar*) malloc (( 1 + taille) *sizeof(guchar));
      cssFile[0] = '\0';
      rewind(f);
      while(fgets(tmp, 1023, f) != NULL)
	{
	  strcat((char *)cssFile, tmp);
	}
    }
  tmp = g_base64_encode (cssFile, strlen((char *) cssFile));
  css = g_strconcat ("data:text/css;charset=utf-8;base64,", tmp, NULL);
  g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (info->label)), "user-stylesheet-uri", css, NULL);
  if (css)  
    g_free (css);
  if (tmp)
    g_free (tmp);
  if(cssFile)
    g_free (cssFile);
  if(f)
    fclose(f);
}

GtkInfo * creer_GInf()
{
  GtkInfo *info;

  info = (GtkInfo *) malloc (1 * sizeof(GtkInfo));
  info->label = webkit_web_view_new ();
  info->scroll = gtk_scrolled_window_new (NULL, NULL);
  g_object_set (info->scroll, "shadow-type", GTK_SHADOW_IN, NULL);
  gtk_container_add(GTK_CONTAINER(info->scroll), info->label);
  setInfoCss_Ginf(info);
  return info;
}

GtkWidget *getContainer(GtkInfo *info)
{
  return info->scroll;
}

int calculTailleEns(Ensemble *ens)
{
  int taille = 0;
  int tailleEns, i;
  tailleEns = getTaille_Ens(ens);
  prems_Ens(ens);
  for(i = 0; i < tailleEns; i++)
    {
      taille += strlen(getData_Ens(ens));
      suivant_Ens(ens);
    }
  return taille;
}

char *derouleChaineEns(Ensemble *ens, int taille)
{
  int tailleEns = getTaille_Ens(ens), i;
  char *html = NULL;
  prems_Ens(ens);
  html = malloc((taille+1) * sizeof(char));
  html[0] = '\0';
  for(i = 0; i < tailleEns; i++)
    {
      strcat(html, (char *)getData_Ens(ens));
      suivant_Ens(ens);
    }
  return html;
}

void ajoutHeaderEns(Ensemble *ens)
{
  char *header = "<html><head><title></title></head><body>";
  char *div = "<div id='", *cdiv = "'>";
  char *principal = "principal";

  insert_Ens(ens, header, NULL, copier_Uti);
  /* Div principal */
  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, principal, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);  
}

void ajoutFooterEns(Ensemble *ens)
{
  char *footer = "</body></html>";

  insert_Ens(ens, footer, NULL, copier_Uti);
}

void ajoutGenre_GInf(Ensemble *ens, Ensemble *ensGenre)
{
  char  *genre = "Genres";
  int tailleGenre;
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *p = "<p>", *fp = "</p>";
  char *h2 = "<h2> ", *fh2 = "</h2>";

  tailleGenre = getTaille_Ens(ensGenre);
  if(tailleGenre > 0)
    {
      int i;
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, genre, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h2, NULL, copier_Uti);
      if(tailleGenre == 1)
	insert_Ens(ens, "Genre", NULL, copier_Uti);
      else
	insert_Ens(ens, "Genres", NULL, copier_Uti);
      insert_Ens(ens, fh2, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      prems_Ens(ensGenre);
      for (i=0; i < tailleGenre; i++)
	{	  
	  insert_Ens(ens,getLibelle_Gen(getData_Ens(ensGenre)), NULL, copier_Uti);
	  if(i < tailleGenre - 1)
	    insert_Ens(ens, ", ", NULL, copier_Uti);
	  suivant_Ens(ensGenre);
	}      
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
}

void setInfoRegroupement_GInf(GtkInfo *info, Arbre *arb)
{
  char *imgD = "<div id='illustration'><img src='file://", *imgF = "'/></div>";
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *titre = "titre";
  char *commentaire = "commentaire";
  char *h2 = "<h2> ", *fh2 = "</h2>";
  char *h1 = "<h1>", *fh1 = "</h1>";
  char *p = "<p>", *fp = "</p>";
  char *html;
  int taille;
  Ensemble *ens = creer_Ens();
  Regroupement *reg = getInformation(arb);
  
  ajoutHeaderEns(ens);  
  if(getTitre_Reg(reg))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, titre, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h1, NULL, copier_Uti);
      insert_Ens(ens, getTitre_Reg(reg), NULL, copier_Uti);
      insert_Ens(ens, fh1, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getIllustration_Reg(reg))
    {
      gchar *currentDir = g_get_current_dir ();
      
      insert_Ens(ens, imgD, NULL, copier_Uti);
      insert_Ens(ens, currentDir, NULL, copier_Uti);
      insert_Ens(ens, "/", NULL, copier_Uti);
      insert_Ens(ens, getIllustration_Reg(reg), NULL, copier_Uti);
      insert_Ens(ens, imgF, NULL, copier_Uti);
      g_free(currentDir);
    }
  if(getCommentaire_Reg(reg))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, commentaire, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h2, NULL, copier_Uti);
      insert_Ens(ens, commentaire, NULL, copier_Uti);
      insert_Ens(ens, fh2, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, getCommentaire_Reg(reg), NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }

  ajoutGenre_GInf(ens, getEnsembleGenre_Reg(reg));
  insert_Ens(ens, fdiv, NULL, copier_Uti);
  ajoutFooterEns(ens);

  taille = calculTailleEns(ens);

  html = derouleChaineEns(ens, taille);

  webkit_web_view_load_string(WEBKIT_WEB_VIEW(info->label), html, "text/html", "UTF-8", "file://");

  if(html)
    free(html);
  detruire_Ens(&ens, detruire_Uti);
}

void ajoutContenuOeu(Ensemble * ens, const Oeuvre *oeuvre)
{
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *contenu = "contenu";
  char titre[11];
  char *var;
  char *h2 = "<h2>", *fh2 = "</h2>";
  char *p = "<p>", *fp = "</p>";
  titre[0] = '\0';
  if(getType_Oeu(oeuvre) == FILM_OEU)
    {
      var = getSynopsis_Fil(getMedia_Oeu(oeuvre));
      if(var == NULL)
	return;
      strcpy(titre, "Synopsis");
    }
  else if(getType_Oeu(oeuvre) == LIVRE_OEU)
    {
      var = getResume_Liv(getMedia_Oeu(oeuvre));
      if(var == NULL)
	return;
      strcpy(titre, "Résumé");
    }
  else 
    return;
  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, contenu, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  insert_Ens(ens, h2, NULL, copier_Uti);
  insert_Ens(ens, titre, NULL, copier_Uti);
  insert_Ens(ens, fh2, NULL, copier_Uti);
  insert_Ens(ens, p, NULL, copier_Uti);
  insert_Ens(ens, var, NULL, copier_Uti);
  insert_Ens(ens, fp, NULL, copier_Uti);
  insert_Ens(ens, fdiv, NULL, copier_Uti);
}

void ajoutDateOeu(Ensemble *ens, const Oeuvre *oeuvre)
{
 char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *contenu = "date";
  char titre[30];
  char *var;
  char *h2 = "<h2>", *fh2 = "</h2>";
  char *p = "<p>", *fp = "</p>";
  var = getDate_Dat(getDateSortie_Oeu(oeuvre));
  if(var == NULL)
    return;
  
  switch(getType_Oeu(oeuvre))
    {
    case FILM_OEU:
      strcpy(titre, "Date de réalisation");
      break;
    case LIVRE_OEU:
      strcpy(titre, "Date de première édition");
      break;
    case MUSIQUE_OEU:
      strcpy(titre, "Date dans les bacs");
      break;
    default:
      return;
      break;
    }
  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, contenu, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  insert_Ens(ens, h2, NULL, copier_Uti);
  insert_Ens(ens, titre, NULL, copier_Uti);
  insert_Ens(ens, fh2, NULL, copier_Uti);
  insert_Ens(ens, p, NULL, copier_Uti);
  insert_Ens(ens, var, NULL, copier_Uti);
  insert_Ens(ens, fp, NULL, copier_Uti);
  insert_Ens(ens, fdiv, NULL, copier_Uti);
  free(var);
}

void ajoutLivreEns(Ensemble *ens, const Livre *livre)
{
  char *vdiv = "<div>", *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *p = "<p>", *fp = "</p>";
  char *h3 = "<h3>", *fh3 = "</h3>";
  char *plivre = "Livre";
  char *volume = "Volume";
  char *numCol = "Numéro de collection";
  char *nbPage = "Nombre de page";
  char *isbn = "ISBN";
  char *taille = "Taille";

  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, plivre, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  if(getVolume_Liv(livre))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, volume, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getVolume_Liv(livre));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getNumCollection_Liv(livre))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, numCol, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getNumCollection_Liv(livre));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getNbPage_Liv(livre))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, nbPage, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getNbPage_Liv(livre));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getTaille_Liv(livre))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, taille, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getTaille_Liv(livre));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getIsbn_Liv(livre))
    {
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, isbn, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, getIsbn_Liv(livre), NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  insert_Ens(ens, fdiv, NULL, copier_Uti);
}

void ajoutFilmEns(Ensemble *ens, const Film *film)
{
  char *vdiv = "<div>", *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *p = "<p>", *fp = "</p>";
  char *h3 = "<h3>", *fh3 = "</h3>";
  char *pFilm = "Film";
  char *metrage = "Type de métrage";
  char *date = "Date";
  char *dateBR = "Sortie Blue-ray";
  char *dateDvd = "Sortie DVD";
  char *duree = "Durée";
  char *pDate;

  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, pFilm, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  if(getMetrage_Fil(film))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, metrage, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getMetrage_Fil(film));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, date, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  pDate = getDate_Dat(getDateBlueRay_Fil(film));
  if(pDate)
    {
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, dateBR, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, pDate, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      free(pDate);
    }
  pDate = getDate_Dat(getDateDvd_Fil(film));
  if(pDate)
    {
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, dateDvd, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, pDate, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      free(pDate);
    }
  insert_Ens(ens, fdiv, NULL, copier_Uti);
  
  if(getTemps_Tem(getDuree_Fil(film)))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, duree, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d min", getTemps_Tem(getDuree_Fil(film)) % 60);
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  insert_Ens(ens, fdiv, NULL, copier_Uti);
}

void ajoutMusiqueEns(Ensemble *ens, const Musique *musique)
{
  char *vdiv = "<div>", *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *p = "<p>", *fp = "</p>";
  char *h3 = "<h3>", *fh3 = "</h3>";
  char *pMusique = "Musique";
  char *numPiste = "Numéro de piste";
  char *paroles = "Paroles";
  char *duree = "Durée";
  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, pMusique, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  if(getPiste_Mus(musique))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, numPiste, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d", getPiste_Mus(musique));
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  
  if(getTemps_Tem(getDuree_Mus(musique)))
    {
      char pA[10];
      insert_Ens(ens, vdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, duree, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      sprintf(pA, "%d min", getTemps_Tem(getDuree_Mus(musique)) % 60);
      insert_Ens(ens, pA, NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getParoles_Mus(musique))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, paroles, NULL, copier_Uti);      
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h3, NULL, copier_Uti);
      insert_Ens(ens, paroles, NULL, copier_Uti);
      insert_Ens(ens, fh3, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, getParoles_Mus(musique), NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  insert_Ens(ens, fdiv, NULL, copier_Uti);
}

void ajoutSecondaire(Ensemble *ens, const Oeuvre *oeuvre)
{
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *secondaire = "secondaire";

  insert_Ens(ens, div, NULL, copier_Uti);
  insert_Ens(ens, secondaire, NULL, copier_Uti);
  insert_Ens(ens, cdiv, NULL, copier_Uti);
  switch(getType_Oeu(oeuvre))
    {
    case FILM_OEU:
      ajoutFilmEns(ens, getMedia_Oeu(oeuvre));
      break;
    case LIVRE_OEU:
      ajoutLivreEns(ens, getMedia_Oeu(oeuvre));
      break;
    case MUSIQUE_OEU:

      ajoutMusiqueEns(ens, getMedia_Oeu(oeuvre));
      break;
    default:
      break;
    }
  insert_Ens(ens, fdiv, NULL, copier_Uti);
}

void ajoutPersonne_GInf(Ensemble *ens, Ensemble *ensPersonne)
{
  char *activite = "activite";
  char *block = "block";
  int taillePersonne;
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *h2 = "<h2> ", *fh2 = "</h2>";

  taillePersonne = getTaille_Ens(ensPersonne);
  if(taillePersonne > 0)
    {
      int i;
      char *class = "<div class=\"personne\">";

      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, activite, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h2, NULL, copier_Uti);
      if(taillePersonne == 1)
	insert_Ens(ens, "Personne", NULL, copier_Uti);
      else
	insert_Ens(ens, "Personnes", NULL, copier_Uti);
      insert_Ens(ens, fh2, NULL, copier_Uti);

      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, block, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      prems_Ens(ensPersonne);
      for (i=0; i < taillePersonne; i++)
	{	  
	  Personne *pers;
	  pers = getPersonne_Act(getData_Ens(ensPersonne));
	  if(pers)
	    {
	      if(getNom_Per(pers) != NULL || getPrenom_Per(pers) != NULL)
		{
		  insert_Ens(ens, class, NULL, copier_Uti);
		  if(getPrenom_Per(pers) != NULL)
		    {
		      insert_Ens(ens, getPrenom_Per(pers), NULL, copier_Uti);
		    }
		  if(getNom_Per(pers) != NULL)
		    {
		      insert_Ens(ens, "    ", NULL, copier_Uti);
		      insert_Ens(ens, getNom_Per(pers), NULL, copier_Uti);
		    }
		  if(i < taillePersonne - 1)
		    insert_Ens(ens, ", ", NULL, copier_Uti);
		  insert_Ens(ens, fdiv, NULL, copier_Uti);
		}
	    }
	  suivant_Ens(ensPersonne);
	}      
      insert_Ens(ens, fdiv, NULL, copier_Uti);

      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
}

void setInfoOeuvre_GInf(GtkInfo *info, const Oeuvre *oeuvre)
{
  char *imgD = "<div id='illustration'><img alt='Image non trouvée' src='file://", *imgF = "'/></div>";
  char *div = "<div id='", *cdiv = "'>", *fdiv = "</div>";
  char *titre = "titre";
  char *commentaire = "Commentaire";
  char *lien = "Lien";
  char *h2 = "<h2> ", *fh2 = "</h2>";
  char *h1 = "<h1>", *fh1 = "</h1>";
  char *p = "<p>", *fp = "</p>";
  char *a = "<a href=\"", *ca = "\">", *fa = "</a>";
  char *html;
  Ensemble *ens = creer_Ens();
  int taille;

  ajoutHeaderEns(ens);
  if(getTitre_Oeu(oeuvre))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, titre, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h1, NULL, copier_Uti);
      insert_Ens(ens, getTitre_Oeu(oeuvre), NULL, copier_Uti);
      insert_Ens(ens, fh1, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  if(getIllustration_Oeu(oeuvre))
    {
      gchar *currentDir = g_get_current_dir ();
      
      insert_Ens(ens, imgD, NULL, copier_Uti);
      insert_Ens(ens, currentDir, NULL, copier_Uti);
      insert_Ens(ens, "/", NULL, copier_Uti);
      insert_Ens(ens, getIllustration_Oeu(oeuvre), NULL, copier_Uti);
      insert_Ens(ens, imgF, NULL, copier_Uti);
      g_free(currentDir);
    }
  ajoutContenuOeu(ens, oeuvre);
  ajoutDateOeu(ens, oeuvre);
  if(getCommentaire_Oeu(oeuvre))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, commentaire, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, h2, NULL, copier_Uti);
      insert_Ens(ens, commentaire, NULL, copier_Uti);
      insert_Ens(ens, fh2, NULL, copier_Uti);
      insert_Ens(ens, p, NULL, copier_Uti);
      insert_Ens(ens, getCommentaire_Oeu(oeuvre), NULL, copier_Uti);
      insert_Ens(ens, fp, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);    
    }

  if(getLienMedia_Oeu(oeuvre))
    {
      insert_Ens(ens, div, NULL, copier_Uti);
      insert_Ens(ens, lien, NULL, copier_Uti);
      insert_Ens(ens, cdiv, NULL, copier_Uti);
      insert_Ens(ens, a, NULL, copier_Uti);
      insert_Ens(ens, getLienMedia_Oeu(oeuvre), NULL, copier_Uti);
      insert_Ens(ens, ca, NULL, copier_Uti);      
      insert_Ens(ens, lien, NULL, copier_Uti);
      insert_Ens(ens, fa, NULL, copier_Uti);
      insert_Ens(ens, fdiv, NULL, copier_Uti);
    }
  ajoutGenre_GInf(ens, getEnsembleGenre_Oeu(oeuvre));

  ajoutPersonne_GInf(ens, getEnsembleCollaborateur_Oeu(oeuvre));
  insert_Ens(ens, fdiv, NULL, copier_Uti);
  
  ajoutSecondaire(ens, oeuvre);
  ajoutFooterEns(ens);
  taille = calculTailleEns(ens);
  html = derouleChaineEns(ens, taille);

  webkit_web_view_load_string(WEBKIT_WEB_VIEW(info->label), html, "text/html", "UTF-8", "file://");
  if(html)
    free(html);
  detruire_Ens(&ens, detruire_Uti);
}

void setInfoVide_GInf(GtkInfo *info)
{
  webkit_web_view_load_string(WEBKIT_WEB_VIEW(info->label), "<html><body>vide</body></html>", "text/html", "UTF-8", "file://");
}
